package com.gushenge.core.requests

import android.util.Log
import com.gushenge.core.beans.*
import com.gushenge.core.dao.GlobalConsts
import com.gushenge.core.dao.MMKVConsts
import com.gushenge.core.httpSign
import com.gushenge.core.time
import com.gushenge.core.toast
import com.rxlife.coroutine.RxLifeScope
import rxhttp.onErrorReturn
import rxhttp.toClass
import rxhttp.wrapper.param.RxHttp

object HomeRequest {
    fun findNews(p:Int,classId:Int,listener:(ArrayList<News>, Int, Int)->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.HOMEV3)
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("type",0)
                    .add("classid",classId)
                    .add("p",p)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Codes<News>>()
                    .await()
            if(result.code==1){
                listener(result.data,result.p,result.max_p)
            }else{
                result.message.toast()
            }
        }
    }
    fun recom(listener:HomeV3.()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.HOMEV3)
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("type",1)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Code<HomeV3>>()
//                    .onErrorReturn {
//                        return@onErrorReturn Code(0,null,it.toString())
//                    }
                    .await()
            if(result.code==1){
                result.data?.listener()
            }else{
                Log.e("recom: ",result.message )
                result.message.toast()
            }
        }
    }
    fun recom1(listener:HomeV3.()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.HOMEV3_NEW)
                .add("uid", MMKVConsts.uid)
                .add("t", time)
                .add("sign", httpSign(MMKVConsts.uid))
                .add("type",1)
                .add("member_id",MMKVConsts.sub)
                .add("language", MMKVConsts.language)
                .toClass<Code<HomeV3>>()
//                .onErrorReturn {
//                    return@onErrorReturn Code(0,null,it.toString())
//                }
                .await()
            if(result.code==1){
                result.data?.listener()
            }else{
                Log.e("recom: ",result.message )
                result.message.toast()
            }
        }
    }
    fun others(p:Int,type:Int,listener:HomeOthers.()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.HOMEV3)
                    .add("type",type)
                    .add("member_id",MMKVConsts.sub)
                    .add("p",p)
                    .add("language", MMKVConsts.language)
                    .toClass<Code<HomeOthers>>()
//                    .onErrorReturn {
//                        return@onErrorReturn Code(0,null,it.toString())
//                    }
                    .await()
            if(result.code==1){
                result.data?.listener()
            }else{
                Log.e("recom: ",result.message )
                result.message.toast()
            }
        }
    }
}